![AWSを使うときに確認すべき52のセキュリティチェック項目と15分でできる簡単なチェックの方法](https://devio2023-media.developers.io/wp-content/uploads/2017/05/eyecatch_security.png)
AWSを使うときに確認すべき52のセキュリティチェック項目と15分でできる簡単なチェックの方法
はじめに
自分が使っているAWS環境のセキュリティに問題がないかと心配になることはないでしょうか?私はよくあります。そこでCIS Amazon Web Service Foundations Benchmark というAWSのセキュリティのガイドラインに沿って使っているAWSアカウントのセキュリティの状況をチェックしてみました。チェック項目は全部で52あります。内容を一通り確認したところ知らなかったAWSのセキュリティの機能やノウハウを知ることができ、見ただけでもとても勉強になりました。簡単にチェックする方法も併せて紹介しますのでぜひ使っているAWS環境でチェックしてみてください。
1 IAM
1.1 rootアカウントを利用しない
rootアカウントは強力な権限を持つため、rootアカウントを利用せずIAMユーザーを利用してください。通常運用でrootアカウントが利用されていないか確認し、利用している場合はIAMユーザーを利用するように変更してください。
ただし、rootアカウントでしかできない作業があります。以下のページに書かれている作業のみrootで行います。
1.2 コンソールログイン用のパスワードが設定されたIAMユーザのMFAを有効化
IAMユーザーのMulti-Factor Authentication (MFA)を有効化し、ログイン時のセキュリティを強化します。
1.3 90日以上利用されていない認証情報を無効化
利用していない認証情報(IAMユーザー、アクセスキー)を定期的に棚卸することでセキュリティを向上させます。認証情報の無効化、または削除を行なってください。以下のページが参考になります。
1.4 アクセスキーを90日以内にローテーションさせる
アクセスキーは、ツール(AWS CLIやPowerShell、AWS SDKなど)からAWSを利用するための認証情報です。定期的にローテーションすることで、アクセスキーの盗難や漏洩に対するリスクを軽減します。アクセスキーのローテーションを行なってください。更新方法は以下のページをご覧ください。
1.5 ~ 11 AWSアカウントのパスワードポリシーの設定
1.5から1.11はAWSアカウントのパスワードポリシーの設定になります。IAMのパスワードポリシーにて「1文字以上の大文字」「1文字以上の小文字」「1文字以上の記号」「1文字以上の数字」「パスワードを14文字以上」「パスワードの再利用禁止」「90日以内のパスワード有効期限」を有効にしてください。IAMユーザーのパスワードポリシーを強化することでパスワードを推測されにくくします
1.12 rootアカウントのアクセスキー使わない
rootアカウントは強力な権限を持ちますのでrootアカウントのアクセスキーを使わないようにします。IAMユーザーを作成し、IAMユーザのアクセスキーを利用します。rootアカウントのアクセスキーがあれば削除してください。
1.13 rootアカウントをMFAで保護する
AWSへのログインは多要素認証(MFA)を有効化しセキュリティを強化します。rootアカウントのMFAを有効化してください。
お使いの AWS アカウントのルートユーザーの仮想 MFA デバイスを有効にする (Console)
1.14 rootアカウントをハードウェアMFAで保護する
ハードウェアMFAは仮想MFAに比べ攻撃されるリスクが低く、最も強い権限を持つrootアカウントに適用することが推奨されています。 ただし、複数AWSアカウントを利用している場合はハードウェアMFAデバイスの管理が問題になる可能性があります。この場合は、高セキュリティが必要なアカウントに対しハードウェアMFAを導入し、残りのアカウントは仮想MFAを導入することを検討してください。
AWS アカウント root ユーザー用にハードウェア MFA デバイスを有効にする (コンソール)
1.15 秘密の質問が設定されていること
秘密の質問はAWSカスタマーサービスでの本人認証で利用されます。確認できないとAWSサポートへ問い合わせができなくなる可能性があります。例えば、MFAデバイス障害などでAWSコンソールへのログインが不能となった際の問い合わせ時に必要です。秘密の質問が最新になっているか確認してください。
1.16 IAMポリシーがグループまたはロールにのみ適用されていること
グループレベルで権限を割り当てることで、ユーザーが増えた場合の複雑さを軽減し、誤った権限を付与するリスクを低下させます。IAMユーザーをグループに所属させてグループにポリシーをアタッチします。IAMユーザーに割り当てたポリシーは削除してください。
1.17 AWS のコストと使用状況レポートの有効化
請求レポートを有効化することで、詳細なAWS利用状況(CSV)をS3に出力します。コストエクスプローラーを利用しグラフ化、予算に合わせたアラートを設定できます。AWS Cost and Usage report を有効化してください。
AWS Cost and Usage reportを作成する
1.18 IAMマスターロールとIAMマネージャーロール
IAMに関する操作権限は一般的なユーザーから分離し専用のIAMロールを利用します。
- IAMマスターロールとはユーザー、グループ、およびロールを作成する権限を持ったロールです。
- IAMマネージャーロールとはユーザーとロールをグループに割り当てる権限を持ったロールです。
IAMマスターロール、IAMマネージャーロールを作成し運用します。
CISで語られているIAMマスターロールとIAMマネージャーロールについて整理
1.19 連絡先の情報更新
連絡先は、セキュリティ上の問題やAWSポリシー違反などの通知に利用されます。連絡先の情報(メールアドレス、電話番号、住所など)が最新になっているか確認してください。
1.20 セキュリティに関する連絡先の登録
連絡先は、AWSからの連絡の中でもセキュリティに関する連絡先になります。セキュリティに関する連絡先を指定することで、組織内のセキュリティチームへ連絡できます。セキュリティに関する連絡先の情報が最新になっているか確認してください。
1.21 IAMインスタンスロールの利用
EC2でのAWSリソースへのAPIアクセスはIAMインスタンスロールを利用します。IAMロールでは期限付きの一時的なキーを利用します。EC2からAWSリソースへのアクセスはにアクセスキーを使わないことでキー漏洩時のリスクを低減できます。適切な権限を付与したIAMロールを作成し、EC2にアタッチしてください。
[アップデート] EC2コンソールで既存のEC2インスタンスに対してIAM Roleをアタッチ、変更ができるようになりました。
1.22 特定のユーザーにAWSサポートへの問い合わせ権限が付与されていること
特定の許可されたユーザーのみがAWSサポートへ問い合わせできるようにします。 グループ、またはロールにIAMポリシー「AWSSupportAccess」をアタッチしてください。
1.23 不要なアクセスキーの発行を避ける
利用していない認証情報は削除してください。
1.24 制限なしのアクセス許可を指定したIAMポリシーを利用しない
IAMには最小権限を付与することで、必要なタスクのみ実行できるようになります。以下のページを参考にユーザーが利用するサービスを確認し、必要な権限のみを付与してください。
補足情報 【Tips】Admin権限を持っていないIAMユーザでIAM Roleを設定するためのポリシー設定
2 ロギング
2.1 全リージョンでCloudTrailが有効であること
CloudTrailはAWSのAPI呼び出しを記録します(IP、時刻、パラメータ)。セキュリティ分析、リソース変更追跡、コンプライアンス監査に必要です。 CloudTrailを有効化してください。
2.2 CloudTrailログファイルの検証が有効化されていること
ログファイルの検証を有効化することで、デジタル署名が作成されます。ログファイルに改ざんが無かったかを確認することができます。ログファイルの検証を有効化してください。
CloudTrail のログファイルの整合性検証を有効にする
2.3 CloudTrailログのS3バケットが公開設定となっていないこと
不特定多数が読み取れる状態になっている為、今すぐパブリック公開設定を削除してください。
バケットのアクセス許可のチェックを使用したパブリックバケットの特定
2.4 CloudTrailログがCloudWatch Logsに配信設定されていること
CloudWatch LogsへCloudTrailログを配信することでリアルタイム分析、フィルタ、アラームが利用できます。CloudWatch Logsへの配信は、適切な監視、アラートを目的とします。CloudWatch Logsへの配信設定をしてください。
2.5 全リージョンでAWS Configが有効であること
AWS Configを有効にすることでサポートされているリソースの構成管理ができ、セキュリティ分析、リソース変更の追跡、コンプライアンス監査が可能になります。 コンソールによる AWS Config の設定
2.6 CloudTrailログが格納されているS3バケットでログ記録を有効にする
S3バケットのアクセスログには、アクセス時間、操作対象のリソース、操作内容が記録され監査ログとして有効です。 S3バケットのアクセスログを有効化してください。
2.7 CloudTrailログをSSE-KMSで暗号化する
暗号化することで、機密性コントロールが追加できます。ログを参照するユーザーはS3バケットへの読み込み権限に加え、復号化権限(KMSの権限)が必要となります。AWS Key Management Service(KMS)を利用することで、S3上のCloudTrailログを暗号化(サーバーサイド暗号化)します 以下のページの手順でCloudTrailログを暗号化してください。
管理されたキーによる ログファイルの暗号化 (SSE-KMS)
2.8 KMSマスターキーをローテーションさせる
暗号化キーをローテーションすることで漏洩時の影響を限定できます。キーのローテーションを有効化しても、過去のキーは保存されている為複合化は透過的に行われます。そのためユーザーで運用作業は必要ありません。以下のページの手順でKMSマスターキーのローテーションを設定してください。
3 モニタリング
3.1 許可されていないAPIコールに対するアラーム通知設定
許可されていないAPIコールを監視することで、アプリケーションエラー、悪意のあるアクティビティ検出を早めます。
CIS Amazon Web Services Foundationsの3.1を参照し設定してください
3.2 MFAなしでのAWSマネージメントコンソールログインに対して、アラーム通知設定されていること
MFAなしログインを監視することで、MFAなしログインの検出を早めます。
CIS Amazon Web Services Foundationsの3.2を参照し設定してください。
3.3 rootアカウントの利用に対するアラーム通知設定
rootアカウントのアクティビティを監視することで、強力な権限を持つユーザーを利用しないよう維持します。
CIS Amazon Web Services Foundationsの3.3を参照し設定してください。
3.4 IAMポリシーの変更に対するアラーム通知設定
IAMポリシーの変更を監視することで、認証と承認の制御を確実に維持します。
CIS Amazon Web Services Foundationsの3.4を参照し設定してください。
3.5 CloudTrail設定の変更に対するアラーム通知設定
CloudTrail設定の変更を監視することで、AWSアカウントで実行されるアクティビティの持続的な可視性を維持します。
CIS Amazon Web Services Foundationsの3.5を参照し設定してください
3.6 AWSマネージメントコンソールのログイン失敗に対するアラーム通知設定
ログイン失敗を監視することで、早期に不正なアタックを検知します
CIS Amazon Web Services Foundationsの3.6を参照し設定してください
3.7 KMSマスターキーの無効化またはスケジュール削除に対するアラーム通知設定
キーの無効化や削除に関して監視することで、誤ったキー削除を防ぎます。キーを誤って削除した場合データにアクセスアクセスできなくなります。
CIS Amazon Web Services Foundationsの3.7を参照し設定してください
3.8 S3バケットポリシー変更に対するアラーム通知設定
S3バケットポリシーはデータへのアクセス権限を設定する重要な項目です。変更を監視することで機密性の高い情報の保護を維持します。
CIS Amazon Web Services Foundationsの3.8を参照し設定してください
3.9 AWS Config変更に対するアラーム通知設定
AWS ConfigではAWSリソースの変更を記録し追跡できます。AWS Configへの意図しない設定変更がないか監視し、AWS Configでの変更管理が継続的行えるように維持します。
CIS Amazon Web Services Foundationsの3.9を参照し設定してください
3.10 セキュリティグループ変更に対するアラーム通知設定
セキュリティグループの変更を監視することで、リソースやサービスが誤って公開されないように維持します。
CIS Amazon Web Services Foundationsの3.10を参照し設定してください
3.11 ネットワークACL変更に対するアラーム通知設定
ネットワークACLの変更を監視することで、サービスが誤って公開されないように維持します。
CIS Amazon Web Services Foundationsの3.11を参照し設定してください
3.12 インターネットゲートウェイ変更に対するアラーム通知設定
インターネットゲートウェイはインターネットアクセスへの経路です。インターネットゲートウェイの変更を監視することで、サービスが誤って公開されないよう維持します。
CIS Amazon Web Services Foundationsの3.12を参照し設定してください
3.13 ルートテーブル変更に対するアラーム通知設定
ルートテーブルではインターネットや専用線などへの経路情報を定義します。ルートテーブルの変更を監視し、誤った経路情報が登録されないよう維持します。
CIS Amazon Web Services Foundationsの3.13を参照し設定してください
3.14 VPC変更に対してに対するアラーム通知設定
VPCでは1カウントに複数作成でき、VPCピアリングにてVPC間をルーティングできます。VPCの変更を監視し、意図した通信が発生しないか維持します。
CIS Amazon Web Services Foundationsの3.14を参照し設定してください
3.15 SNS TopicのSubscriberに適切な連絡先が設定されていること
以下の記事を参考にしてモニタリングで設定しているアラームの通知先が最新になっているか確認してください。
4 ネットワーク
4.1 SSHの接続の制限
Security Groupにて、0.0.0.0/0からポート22番(SSH)への接続を許可しないようにします。SSHへのアクセス元を絞ることで、不特定多数からのアクセスを防ぎます。セキュリティグループの設定を変更し、アクセス元を絞るか、不要な場合は削除してください。
4.2 RDP(リモートデスクトップ)の接続の制限
Security Groupにて、0.0.0.0/0から3389番(RDP)への接続を許可しないようにします。RDPへのアクセス元を絞ることで、不特定多数からのアクセスを防ぎます。セキュリティグループの設定を変更し、アクセス元を絞るか、不要な場合は削除してください。
4.3 VPC Flow Logsの有効化
利用可能な全てのリージョンにおいて、VPC Flow Logsを有効にします。VPC Flow Logsは、VPC内のネットワーク通信のログを保存します。セキュリティ分析や異常な通信を調査するのに役立ちます。VPC Flow Logを有効化してください。
VPC Flow LogsでVPC内のIPトラフィックを監視することができるようになりました!
4.4 defaultセキュリティグループ
defaultセキュリティグループは、VPC作成時に自動で作成され、インスタンスを起動するときにセキュリティグループを指定しないと、そのインスタンスはデフォルトのセキュリティグループに自動的に関連付けられます。意図した設定を行うためdefaultセキュリティグループの利用を避けます。defaultセキュリティグループ以外のセキュリティグループを用意し、EC2へアタッチしてください。defaultセキュリティグループからアウトバウンド・インバウンドルールを削除し、インスタンスにアタッチしている場合はデタッチしてください。
4.5 VPCピアリング用のルーティングの追加
VPCピアリングを利用することで、VPC間で通信することができます。必要最低限のVPCピアリング用のルーティングが登録されているか確認してください。
全部チェックするのが大変すぎる
上記の52つのチェック項目を全部手動でチェックするのはあまりに大変だと思います。そこで自動でチェックしてくれるinsightwatch(インサイトウォッチ)という無料のプロダクトをご紹介します。insightwatchはCISからプロダクト認定を受けています。
URLは以下になります。「セキュリティチェックを始める」というボタンを押すとサインインの画面になります。
AWS環境のセキュリティ監査サービス インサイトウォッチ(insightwatch)by クラスメソッド
サインアップの手順やチェックするAWSアカウントの登録など手順は以下のページを参考になります。ぜひやってみてください。簡単なのですぐにできると思います。
私もやってみました
私も自習用に会社に用意してもらっているAWSアカウントで試してみました。
組織の情報やAWSアカウント連携を設定したら左のメニューから「チェック実行」をクリックします。そこで対象のプロジェクトを選択し、チェック実行ボタンを押しただけでチェックが始まります。
少し待つとステータスがレポート出力完了になりました。PDF列のリンクからレポートがダウンロードできました。
以下のようなレポートになっていました。画像は載せていませんがチェックの結果が項目ごとに出力されています。赤の重要とあるのが、対応した方がよいとされる項目です。結構厳しい結果ですね。
項目の合計が52ではなく94なのはCIS Amazon Web Service Foundations Benchmarkのチェック項目の他にIAMベストプラクティス(25項目)とAWSセキュリティチェックリスト(17項目)のチェックも行っているためです。チェック項目に興味のある方は以下をご覧ください。
最後に
AWSを運用していくうえで重要になるセキュリティのチェックの話でした。insightwatchを使って簡単にセキュリティチェックを行うことできますので定期的にチェックすることをお勧めします。弊社ではクラスメソッドメンバーズに加入いただいたお客様にモニタリングのチェック項目の通知設定が簡単に設定できるCloudFormationテンプレートの提供やチェックでNGだった箇所の解決のお手伝いをさせていただいています。
AWSの請求代行から構築まで支援「クラスメソッドメンバーズ」
insightwatchにはセキュリティのチェックの他にEC2のバックアップや起動停止などのジョブをスケジュール実行する機能もあります。こちらも無料になりますのでお試しください。現在は以下の4種類のジョブを実行できます。
- EBSスナップショットの取得
- EC2バックアップの取得
- EC2インスタンスの起動・停止
- EC2インスタンスタイプの変更
使い方は以下の記事が分かりやすいです。
EC2 の自動バックアップなら無料ツールの insightwatch におまかせください!
一緒に働きませんか!
最後に弊社ではinsightwatchを開発するメンバーを募集しています。興味のある方は以下の記事をご覧ください。